home *** CD-ROM | disk | FTP | other *** search
- <?xml version="1.0" encoding="UTF-8" standalone="no"?>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
- <title>7.2. Matrice de convolution</title>
- <link rel="stylesheet" href="gimp-help-plain.css" type="text/css" />
- <link rel="stylesheet" href="gimp-help-screen.css" type="text/css" />
- <meta name="generator" content="DocBook XSL Stylesheets V1.66.1" />
- <link rel="start" href="index.html" title="Guide Utilisateur de GIMP" />
- <link rel="up" href="ch06s07.html" title="7. Filtres génériques" />
- <link rel="prev" href="ch06s07.html" title="7. Filtres génériques" />
- <link rel="next" href="ch06s07s03.html" title="7.3. Dilater" />
- </head>
- <body>
- <div xmlns="" class="navheader">
- <table width="100%" summary="Navigation header">
- <tr>
- <th colspan="3" align="center" id="chaptername">7. Filtres génériques</th>
- </tr>
- <tr>
- <td width="20%" align="left"><a accesskey="p" href="ch06s07.html">Précédent</a> </td>
- <th width="60%" align="center" id="sectionname">7.2. Matrice de convolution</th>
- <td width="20%" align="right"> <a accesskey="n" href="ch06s07s03.html">Suivant</a></td>
- </tr>
- </table>
- <hr />
- </div>
- <div class="sect2" lang="fr" xml:lang="fr">
- <div class="titlepage">
- <div>
- <div>
- <h3 class="title"><a id="plug-in-convmatrix"></a>7.2. Matrice de convolution</h3>
- </div>
- </div>
- </div>
- <a id="id3460678" class="indexterm"></a>
- <div class="mediaobject">
- <img src="../images/filters/fr/filters-generic-convolution.png" />
- </div>
- <div class="simplesect" lang="fr" xml:lang="fr">
- <div class="titlepage">
- <div>
- <div>
- <h4 class="title"><a id="id3460710"></a>Généralités</h4>
- </div>
- </div>
- </div>
- <p>
- Ce filtre se trouve à
- <span class="guimenuitem">Image>Filtres/Générique/Matrice de <span class="accel">c</span>onvolution</span>
- </p>
- <p>
- Nous sommes là dans le coin des mathématiciens. La plupart des filtres de traitement
- des images utilisent des matrices de convolution. Avec le filtre Matrice de convolution,
- vous pouvez, si le coeur vous en dit, vous concocter un petit filtre sur mesure.
- </p>
- <p>
- Mais qu'est-ce que c'est qu'une matrice de convolution? On peut s'en faire une idée
- approximative sans utiliser les outils mathématiques que bien peu connaissent. Une
- convolution est un traitement d'une matrice par une autre appelée matrice de
- convolution ou «noyau» (kernel).
- </p>
- <p>
- Notre filtre «Matrice de convolution» utilise une première matrice qui est l'image, c-à-d
- une collection de pixels en coordonnées rectangulaires 2D (il y a des matrices 3D...), et
- un noyau variable selon l'effet souhaité.
- </p>
- <p>
- Gimp utilise des matrices de convolution 5x5 ou 3x3. Nous nous limiterons aux matrices 3x3,
- les plus utilisées. Elles suffisent à tous les effets recherchés. Si toutes les cases des
- bords du noyau sont à 0, le système considère qu'il s'agit d'une matrice 3x3.
- </p>
- <p>
- Le filtre étudie successivement chacun des pixels de l'image. Pour chaque pixel, que nous
- appellerons «pixel initial», il multiplie la valeur de ce pixel et de chacun des 8 pixels
- qui l'entourent par la valeur correspondante dans le noyau. Il additionne l'ensemble des
- résultats et le pixel initial prend alors la valeur du résultat final.
- </p>
- <p>
- Vite un exemple, simple:
- <img src="../images/filters/examples/convolution-example1.png" />
- À gauche se trouve la matrice de l'image: chaque pixel est indiqué par sa valeur. Le pixel
- initial est encadré de rouge. La zone d'action du noyau est encadré de vert. Au centre, se
- trouve le noyau et, à droite, le résultat de la convolution.
- </p>
- <p>
- Voici ce qui s'est passé: le filtre a lu successivement, de gauche à droite et de haut en
- bas, les pixels de la zone d'action du noyau et il a multiplié chacun d'eux par la valeur
- correspondante du noyau et additionné les résultats: (100*0)+(50*1)+(50*0)*(100*0)+(100*0)
- +(100*0)+(100*0)+(100*0)+(100*0)+(100*0) = 50. Le pixel initial a pris la valeur 50.
- Précédemment, quand le pixel initial a eu la valeur 50, il a pris la valeur 100 du pixel au
- dessus (le filtre dépose ses résultats sur une copie de l'image et pas directement dans
- l'image) et s'est fondu dans l'arrière-plan 100. Le résultat graphique est un décalage du
- pixel initial d'un pixel vers le bas.
- </p>
- </div>
- <div class="simplesect" lang="fr" xml:lang="fr">
- <div class="titlepage">
- <div>
- <div>
- <h4 class="title"><a id="id3460826"></a>Options</h4>
- </div>
- </div>
- </div>
- <div class="variablelist">
- <dl>
- <dt>
- <span class="term">Matrice</span>
- </dt>
- <dd>
- <p>
- C'est la matrice 5x5 du noyau que vous voulez créer: vous entrez les valeurs voulues
- directement dans les cases.
- </p>
- <p>
- <span class="guilabel">Diviseur</span>: le résultat du calcul précédent sera divisé par ce
- diviseur. Vous n'utiliserez guère que 1 qui laisse le résultat inchangé, et 9 ou 25
- selon la taille de la matrice utilisée, ce qui donne la moyenne de la valeur des pixels.
- </p>
- <p>
- <span class="guilabel">Décalage</span>: cette valeur est ajoutée au résultat de la division.
- C'est utile si le résultat risque d'être négatif. Le Décalage peut être négatif.
- </p>
- </dd>
- <dt>
- <span class="term">Bordure</span>
- </dt>
- <dd>
- <p>
- Quand le pixel initial est sur un bord, une partie du noyau porte en dehors des limites
- de l'image. Vous devez décider de ce que doit faire le filtre. Dans les exemples
- ci-dessous, le noyau simple de déplacement décrit plus haut a été appliqué plusieurs
- fois, grâce à Ctrl-F, à l'image:
- </p>
- <div class="mediaobject">
- <img src="../images/filters/filters-convolution-milord.png" />
- </div>
- <div class="itemizedlist">
- <ul type="disc">
- <li>
- <p>
- <span class="guilabel">Étendre</span>: cette partie du noyau n'est pas prise en compte.
- Des pixels disparaissent. La ligne libérée est remplacée par une extension de
- la ligne suivante.
- </p>
- <div class="mediaobject">
- <img src="../images/filters/filters-convolution-extend.png" />
- </div>
- </li>
- <li>
- <p>
- <span class="guilabel">Enrouler</span>: cette partie du noyau étudiera les pixels du bord
- opposé, ce qui équivaut à faire réapparaître de l'autre côté les pixels qui
- disparaissent d'un côté.
- </p>
- <div class="mediaobject">
- <img src="../images/filters/filters-convolution-wrap.png" />
- </div>
- </li>
- <li>
- <p>
- <span class="guilabel">Rogner</span>: Les pixels situés en bordure disparaissent et les
- parties libérées sont transparentes. Si l'option Poids Alpha n'est pas cochée et
- si l'image n'a pas de canal alpha, cette option est en grisé.
- </p>
- <div class="mediaobject">
- <img src="../images/filters/filters-convolution-crop.png" />
- </div>
- </li>
- </ul>
- </div>
- </dd>
- <dt>
- <span class="term">Canaux</span>
- </dt>
- <dd>
- <p>
- Vous pouvez choisir là le ou les canaux sur lesquels agira le filtre.
- </p>
- </dd>
- <dt>
- <span class="term">Automatique</span>
- </dt>
- <dd>
- <p>
- Quand cette otion est cochée, le Diviseur prend la valeur du résultat du calcul de
- convolution. Si ce résultat est égal à 0 (on ne peut pas diviser par 0), un Décalage
- de 128 est appliqué. S'il est négatif (on ne peut pas avoir de couleur négative),
- c'est un décalage de 255 qui est appliqué (ce qui inverse le résultat).
- </p>
- </dd>
- <dt>
- <span class="term">Poids alpha</span>
- </dt>
- <dd>
- <p>
- Si cette option n'est pas cochée, le calcul ne tient pas compte du degré de
- transparence des couleurs, ce qui peut être cause d'artéfacts lors de l'application
- d'un flou.
- </p>
- </dd>
- </dl>
- </div>
- </div>
- <div class="simplesect" lang="fr" xml:lang="fr">
- <div class="titlepage">
- <div>
- <div>
- <h4 class="title"><a id="id3461028"></a>Exemples</h4>
- </div>
- </div>
- </div>
- <p>
- La création de noyaux nécessite des connaissances mathématiques de haut niveau.
- Mais vous en trouverez de tout faits sur la Toile. En voici quelques exemples:
- </p>
- <div class="variablelist">
- <dl>
- <dt>
- <span class="term">Augmenter le contraste</span>
- </dt>
- <dd>
- <div class="mediaobject">
- <img src="../images/filters/examples/convolution-sharpen.png" />
- </div>
- </dd>
- <dt>
- <span class="term">Flou</span>
- </dt>
- <dd>
- <div class="mediaobject">
- <img src="../images/filters/examples/convolution-blur.png" />
- </div>
- </dd>
- <dt>
- <span class="term">Amélioration des bords</span>
- </dt>
- <dd>
- <div class="mediaobject">
- <img src="../images/filters/examples/convolution-edge.png" />
- </div>
- </dd>
- <dt>
- <span class="term">Détection des bords</span>
- </dt>
- <dd>
- <div class="mediaobject">
- <img src="../images/filters/examples/convolution-edge-detect1.png" />
- </div>
- </dd>
- <dt>
- <span class="term">Repoussage</span>
- </dt>
- <dd>
- <div class="mediaobject">
- <img src="../images/filters/examples/convolution-emboss.png" />
- </div>
- </dd>
- </dl>
- </div>
- </div>
- </div>
- <div class="navfooter">
- <hr />
- <table width="100%" summary="Navigation footer">
- <tr>
- <td width="40%" align="left"><a accesskey="p" href="ch06s07.html">Précédent</a> </td>
- <td width="20%" align="center">
- <a accesskey="u" href="ch06s07.html">Niveau supérieur</a>
- </td>
- <td width="40%" align="right"> <a accesskey="n" href="ch06s07s03.html">Suivant</a></td>
- </tr>
- <tr>
- <td width="40%" align="left" valign="top">7. Filtres génériques </td>
- <td width="20%" align="center">
- <a accesskey="h" href="index.html">Sommaire</a>
- </td>
- <td width="40%" align="right" valign="top"> 7.3. Dilater</td>
- </tr>
- </table>
- </div>
- </body>
- </html>
-